/**
 * 
 */
package funciones;

/**
 * @author roberto
 *
 */
public abstract class Funcion {
	public String numerador;
	public String denominador;
	public Double num;
	
	public String arg1[] =  new String[2];
	public String arg2[] =  new String[2];      
	public int oper;
	public String eval[] =  new String[2];
	
	
	public String parametros[];
	/**
	 * Asigna valores
	 * @param s1
	 * @param s2
	 */
		
	public String []validar(String s) {
		String []ret = new String[2]; //   x/y
		boolean fraccion = false;
		ret[0]=ret[1]="";
		for(int i=0; i< s.length(); i ++) {
			if(s.charAt(i)!='/') {
				if(!fraccion) {
					ret[0]+=s.charAt(i);
				}else {
					ret[1]+=s.charAt(i);
				}				
			}	
			else {
				fraccion = true;
			}
		}
		if(!fraccion)
			ret[1]="1";
		
		return ret;
	}
	/**
	 * Evalua la funcion.
	 * @return El valor numerico de la evaluacion simbolica.
	 */
	public Double evaluar() {	
		return null;
	}
		
	
	
	/**
	 * Evalua de forma simbolica la funcion.
	 * @return El valor simbolico de la evaluacion.
	 */
	public String evaluarSimbolicamente() {
		return null;
	}
	
	public String []minimaExpresion(String s[]) {
		String ret[] = new String [2];
		double a2 = Double.valueOf(s[0]).doubleValue();
		double b2 = Double.valueOf(s[1]).doubleValue();
		int divisor=2;
		boolean invertir =false;
						
		if(a2<0) {
			invertir = true;
			a2= a2*(-1);
		}
		if(b2<0) {
			invertir= invertir?false:true;
			b2= b2*(-1);
		}
		
		do {
			if( (a2%divisor==0)&&(b2%divisor==0) ) {
				a2/=divisor;
				b2/=divisor;
				// Modo depurar!!!
				//System.out.println(a2+"/"+b2);
			} 
			else {
				divisor++;
			}
		} while((divisor<=a2)&&(divisor<=b2));
				
		if(a2==b2)
			a2=b2=1;
		
			
		ret[0] = String.valueOf(a2).toString();
		ret[1] = String.valueOf(b2).toString();		
		if(invertir)
			ret[0] =  "-"+ret[0];
		return ret;
	}
}